const config = require('./config');
const print = require('./print');
const delay = require('./delay');

/**
 * 运行该函数，会逐字打印config.js中的文本
 * 每个字之间的间隔在config.js已有配置
 */

/* forEach 是一个同步方法，它不会等待它的回调函数变成异步后所发生的“等待”操作。 */
// async function run() {
//     Array.from(config.text).forEach(async (item, index) => {
//         print(index)
//         await delay(config.wordDuration)
//     })
// }


async function run() {
    for (let index = 0; index < config.text.length; index++) {
        print(index)
        await delay(config.wordDuration)
    }
    console.log('结束打印了');
}

// async function run() {
//   let index = 0;
//   while (index < config.text.length) {
//     print(index); // 打印到这个位置
//     await delay(config.wordDuration);
//     index++;
//   }
// }


// run();




/* 针对forEach循环，解析 */
function runTest() {
    Array.from(config.text).forEach(async (item, index) => {
        console.log(`开始处理索引 ${index}`); // 为了方便观察，我们加个日志
        print(index);
        await delay(config.wordDuration); // 假设 delay(1000) 返回一个1秒后完成的 Promise
        console.log(`索引 ${index} 的延迟结束了`); // 再加一个日志
    });
    console.log("forEach 循环已经执行完毕！");
}

runTest();

/* 

0
1
forEach 循环已经执行完毕！
// (等待约1秒后)
索引 0 的延迟结束了
索引 1 的延迟结束了

*/